package gitee.derumin.lib_for_derumin.helpers.config;

import com.google.gson.JsonObject;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public interface ConfigController {
    /**
     * 传入一个json对象对配置进行修改。该对象未必含有全部的键值对。
     * @param object 一个包含部分配置信息的json对象。一般只包含一个键值对。
     * @return 若成功进行至少一次修改，则返回true。
     */
    boolean modifyFrom(@NotNull JsonObject object);

    /**
     * 传入一个json对象对配置进行初始化。传入的对象应当具有全部的键值对。
     * @param object 一个应当包含全部配置信息的json对象。
     */
    void initializeFromJson(@Nullable JsonObject object);

    /**
     * 将当前配置的信息生成一个json对象。
     * @return 一个应当包含当前全部配置信息的对象。
     */
    @Nullable JsonObject writeConfigToJson();

    /**
     * 将配置的默认信息生成一个json对象。
     * @return 一个应当包含全部默认配置信息的对象。
     */
    @NotNull JsonObject getDefaultJson();
}
